import type { PageParam, PageResult } from '@vben/request';

import type { AiPromptVariablesApi } from '#/api/ai/prompt/promptVariables';

import { requestClient } from '#/api/request';

export namespace AiPromptTemplatesApi {
  /** 提示词模版信息 */
  export interface PromptTemplates {
    id: number; // 提示词id
    code: string; // 提示词编号
    icon: string; // 提示词图标
    color: string; // 颜色
    name?: string; // 提示词名称
    description: string; // 提示词描述
    content?: string; // 提示词内容
    usageDescription: string; // 提示词使用说明
    categoryId: number; // 分类ID
    categoryName?: string; // 分类名称
    versionNum: string; // 版本号
    language: string; // 语言
    modelType: string[]; // 适用的AI模型
    modelTypeName?: string[]; // 适用的AI模型名称
    visibility: number; // 可见性
    status: number; // 状态
    systemFlag: boolean; // 系统内置
    usageCount: number; // 使用次数
    collect: number; // 收藏次数
    rating: number; // 评分
    metadata: string; // 其他参数
    effectImg: string[]; // 效果展示图片
    tagList?: string[]; // 标签列表
    variablesList?: AiPromptVariablesApi.PromptVariables[]; // 提示词变量列表
  }
  export interface PromptTemplatesChangeVersionVO {
    id: number; // 提示词id
    versionId: number; // 版本id
  }
}

/** 查询提示词模版分页 */
export function getPromptTemplatesPage(
  data: PageParam,
  desensitize: boolean,
  encrypt: boolean,
) {
  return requestClient.post<PageResult<AiPromptTemplatesApi.PromptTemplates>>(
    '/ai/prompt-templates/page',
    data,
    { desensitize, encrypt },
  );
}

/** 查询提示词模版详情 */
export function getPromptTemplates(id: number, versionNum?: string) {
  return requestClient.get<AiPromptTemplatesApi.PromptTemplates>(
    `/ai/prompt-templates/get`,
    {
      params: { id, versionNum },
      timeout: 20_000,
    },
  );
}

/** 新增提示词模版 */
export function createPromptTemplates(
  data: AiPromptTemplatesApi.PromptTemplates,
) {
  return requestClient.post('/ai/prompt-templates/create', data);
}

/** 修改提示词模版 */
export function updatePromptTemplates(
  data: AiPromptTemplatesApi.PromptTemplates,
) {
  return requestClient.put('/ai/prompt-templates/update', data);
}

/** 删除提示词模版 */
export function deletePromptTemplates(id: number) {
  return requestClient.delete(`/ai/prompt-templates/delete?id=${id}`);
}

/** 批量删除提示词模版 */
export function deletePromptTemplatesList(ids: number[]) {
  return requestClient.delete(
    `/ai/prompt-templates/delete-list?ids=${ids.join(',')}`,
  );
}

/** 导出提示词模版 */
export function exportPromptTemplates(params: any) {
  return requestClient.download('/ai/prompt-templates/export-excel', {
    params,
  });
}

/** 变更提示词模版版本 */
export function changePromptTemplatesVersion(
  data: AiPromptTemplatesApi.PromptTemplatesChangeVersionVO,
) {
  return requestClient.post('/ai/prompt-templates/change-version', data);
}
